package com.kgcx.common.exception;

/**
 * 系统异常
 * 系统异常通过异常机制抛出，往往可以通过上游系统重试解决
 * Created by panjin on 2017/11/27.
 */
public class SystemException extends BaseException {

    private static final long serialVersionUID = 1L;

    /**
     *
     */
    public SystemException() {
        super();
    }

    /**
     *
     * @param code
     *            错误码
     * @param message
     *            错误信息
     */
    public SystemException(String code, String message) {
        super(code, message);
    }

    /**
     *
     * @param code
     *            错误码
     * @param message
     *            错误信息
     * @param cause
     *            原始异常
     */
    public SystemException(String code, String message, Throwable cause) {
        super(code, message, cause);
    }

    /**
     *
     * @param message
     *            错误信息
     */
    public SystemException(String message) {
        super(message);
    }

    /**
     *
     * @param message
     *            错误信息
     * @param cause
     *            原始异常
     */
    public SystemException(String message, Throwable cause) {
        super(message, cause);
    }

    /**
     *
     * @param code
     *            错误码
     * @param message
     *            错误信息
     * @param args
     *            额外参数
     */
    public SystemException(String code, String message, Object[] args) {
        super(code, message, args);
    }

    /**
     *
     * @param code
     *            错误码
     * @param message
     *            错误信息
     * @param cause
     *            原始异常
     * @param args
     *            额外参数
     */
    public SystemException(String code, String message, Throwable cause, Object[] args) {
        super(code, message, cause, args);
    }

    /**
     *
     * @param message
     *            错误信息
     * @param args
     *            额外参数
     */
    public SystemException(String message, Object[] args) {
        super(message, args);
    }

    /**
     *
     * @param message
     *            错误信息
     * @param cause
     *            原始异常
     * @param args
     *            额外参数
     */
    public SystemException(String message, Throwable cause, Object[] args) {
        super(message, cause, args);
    }

    /**
     * 为了泛化调用时好判断code
     */
    @Override
    public String toString() {
        String s = getClass().getName();
        return "{\"class\":\""+s+"\",\"code\":"+this.getCode()+",\"message\":\""+this.getMessage()+"\"}";
    }
}
